package org.yxj.lib_downfile.db;

import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import org.yxj.lib_downfile.LogUtil;

/**
 * 数据库操作类
 *
 * @author on 2022/8/25
 */
public class AppSQLiteHelper extends SQLiteOpenHelper {

    /**
     * 数据库名字
     */
    private static final String DB_NAME = "appDb.db";

    /**
     * 数据库版本
     */
    private static final int DV_VERSION = 2;

    /**
     * 创建数据库
     *
     * @param context
     */
    public AppSQLiteHelper( Context context) {
        super(context, DB_NAME, null, DV_VERSION);
        LogUtil.LOG_V("[AppSQLiteHelper]-> 创建数据库");
    }

    /**
     * 创建表
     *
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL(DownFileTable.sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        LogUtil.LOG_V("[AppSQLiteHelper]-> onCreate 创建数据表");
    }

    /**
     * 更新数据库
     *
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        /**
         * 没有新版本
         */
        if (newVersion == oldVersion) return;
        /**
         * 开启事务
         */
        db.beginTransaction();
        /**
         * 卸载所有表
         */
        dropTable(db);
        /**
         * 重新创建表
         */
        onCreate(db);
        /**
         * 标记处理成功
         */
        db.setTransactionSuccessful();

        db.endTransaction();


        LogUtil.LOG_V("[AppSQLiteHelper]-> onUpgrade 更新数据表");
    }

    /**
     * 卸载所有表
     *
     * @param db
     */
    private void dropTable(SQLiteDatabase db) {
        db.execSQL("drop table if exists " + DownFileTable.table);
    }
}
